package com.ruoyi.training.service;

import java.util.List;

import com.ruoyi.examination.domain.PaperConfig;
import com.ruoyi.training.domain.TrainingClass;
import com.ruoyi.training.dto.PeopleAllocationDTO;
import com.ruoyi.training.dto.TrainingClassDto;
import com.ruoyi.training.vo.TrainClassVo;

/**
 * 培训班主Service接口
 *
 * @author WorrilessGo
 * @date 2025-09-24
 */
public interface ITrainingClassService
{
    /**
     * 查询培训班主
     *
     * @param trainingClassId 培训班主主键
     * @return 培训班主
     */
    public TrainingClass selectTrainingClassByTrainingClassId(String trainingClassId);

    /**
     * 查询培训班主列表
     *
     * @param trainingClass 培训班主
     * @return 培训班主集合
     */
    public List<TrainingClass> selectTrainingClassList(TrainingClass trainingClass);

    /**
     * 新增培训班主
     *
     * @param trainingClass 培训班主
     * @return 结果
     */
    public int insertTrainingClass(TrainingClass trainingClass);

    /**
     * 修改培训班主
     *
     * @param trainingClass 培训班主
     * @return 结果
     */
    public int updateTrainingClass(TrainingClass trainingClass);

    /**
     * 批量删除培训班主
     *
     * @param trainingClassIds 需要删除的培训班主主键集合
     * @return 结果
     */
    public int deleteTrainingClassByTrainingClassIds(String[] trainingClassIds);

    /**
     * 删除培训班主信息
     *
     * @param trainingClassId 培训班主主键
     * @return 结果
     */
    public int deleteTrainingClassByTrainingClassId(String trainingClassId);

    /**
     * 通过项目和条件查询培训班主列表
     * lqx
     */
    public List<TrainingClassDto> selectList(TrainingClassDto trainingClassDto);

    /**
     * 班主任查询我的班级列表
     *
     * @param trainingClassDto 培训班DTO，包含当前登录用户ID
     * @return 培训班集合
     */
    public List<TrainingClassDto> selectMyClasses(TrainingClassDto trainingClassDto);

    /**
     * 获取培训班vo详细信息
     */
    public TrainClassVo selectTrainingClassVoByTrainingClassId(String trainingClassId);
    /**
     * 保存班级人员分配信息
     * @param allocationDTO 人员分配信息
     * @return 影响的记录数
     */
    int savePeopleAllocation(PeopleAllocationDTO allocationDTO);

    /**
     * 根据班级ID查询人员分配信息
     * @param trainingClassId 班级ID
     * @return 人员分配信息，已转换为原始格式
     */
    PeopleAllocationDTO queryPeopleAllocation(String trainingClassId);

    /**
     * 班级交接
     */
    public int classHandover(TrainingClassDto trainingClassDto);

    /**
     * 设置培训班考试
     * lqx
     */
    public int setExam(TrainingClass trainingClass);

    /**
     * 通过培训班id获取培训班考试设置
     * lqx
     */
    public List<PaperConfig> getExamInfoById(String trainingClassId);

    /**
     * 学员查询我的班级列表
     * lqx
     */
    public List<TrainingClassDto> selectStudentClasses(String studentId);
}
